package com.theeviljames.maths;

public interface IMatrixOps {

	public double[][] mult(double[][] a, double[][] b);
	public double[][] dot(double[][] a, double[][] b);
	public double[][] cross(double[][] a, double[][] b);
	public double[][] inverse(double[][] a);
	public double[][] subtract(double[][] a, double[][] b);
	public double[][] add(double[][] a, double[][] b);
	public double[][] divide(double[][] a, double[][] b);
	public double[][] pow(double[][] a, double b);
	
	public double[][] scalarMult(double[][] a, double b);
	public double[][] scalarAdd(double[][] a, double b);
	public double[][] scalarSubtract(double[][] a, double b);
	public double[][] scalarDivide(double[][] a, double b);
	public double[][] scalarSubtract(double a, double[][] b);
	public double[][] scalarDivide(double a, double[][] b);
	
	public double[][] transpose(double[][] a);
	public double length(double[][] a);
	public double[][] normalize(double[][] a);
	public boolean isColumnVector(double[][] a, double s);
	public boolean isRowVector(double[][] a, double s);
	public boolean checkDims(double[][] a, double[][] b);
	public void print(double[][] a);
	public double[][] getIdentityMatrix(int n);
	public double[] diag(double[][] a);
	public double[][] append(double[][] a, double[][] b);
	public double[][] extract(double[][] a, int x1, int y1, int x2, int y2);
	public double[][] scalarDivideRow(double[][] a, int row, double denominator);
	public double[][] negate(double[][] a);
}
